﻿using MyAppAPI.Models.Hotel;
using MyAppAPI.ParamModel;

namespace MyAppAPI.Services.interfaceService
{
    public interface IHotelService
    {
        Task<UserData> Login(string loginId, string loginPwd);
        Task<List<RoleData>> GetAllRoleType();
        Task<bool> AddRoleName(string roleName);
        Task<bool> DeleteRoleName(int roleId);
        Task<RoleData> GetRoleByRoleId(int roleId);
        bool UpdateRoleByRoleId(RoleData roleData);
        List<UserData> GetAllUser(ref int count,int pageIndex,int pageSize);
        List<UserData> GetAllUserByRoleId(int roleId, ref int count,int pageIndex,int pageSize);
        Task<UserData> GetUser(string loginId);
        Task<bool> AddUser(UserData userData);
        bool UpdateUser(UserData userData);
        Task<bool> DeleteUser(int id);
        Task<bool> ResetPwd(ResetPwdParams resetPwdParams);
        Task<List<RoomTypeData>> GetAllRoomType();
        Task<bool> AddRoomType(RoomTypeData roomTypeData);
        Task<RoomTypeData> GetRoomTypeByRoomTypeId(int roomTypeId);
        bool UpdateRoomByRoomTypeId(RoomTypeData roomTypeData);
        Task<bool> DeleteRoomType(int roomTypeId);
        List<RoomDetailData> GetAllRoomDetails(ref int count,int roomTypeId,int roomStateId,int pageIndex,int pageSize,int guestId);
        List<RoomStateData> GetAllRoomState(int flag);
        Task<bool> AddRoom(RoomData roomData);
        Task<RoomData> GetRoomByRoomId(int roomId);
        bool UpdateRoomData(RoomData roomData);
        bool DeleteRoomData(int roomId);
        List<GuestDetailData> GetAllGuestRecord(ref int count, string guestName, int resideStateId, int pageIndex, int pageSize);
        List<ResideState> GetAllResideStateData();
        ResideState GetResideSatetByStateId(int resideStateId);
        bool AddGuestRecord(GuestData guestData);
        GuestReturnOneData GetGuestDataByGuestId(int guestId);
        bool UpdateGuestData(GuestData guestData);
        bool DeleteGuestDataByGuestId(int guestId);
        GuestData Checkout(int guestId);
        List<RoomTypeTotalData> GetRoomTypeTotalMoney();
    }
}
